#include<iostream>
#include<set>
using namespace std;
const int N=110;

int n;
int fa[N*N];
char numset[N][N];

int dy[]={1,-1,0,1};
int dx[]={0,1,1,1};

void init()
{
	for(int i=1;i<=n;i++)
	{
		fa[i]=i;
	}
}

int find(int x)
{
	return x==fa[x]?x:fa[x]=find(fa[x]);
}

void un(int x,int y)
{

	fa[find(x)] = find(y);
}

bool issame(int x,int y)
{
	return find(x)==find(y);
}

int main()
{
	int m;cin>>n>>m;

	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			cin>>numset[i][j];
		}
	}

	for(int i=0;i<n*m;i++)
	{
		fa[i]=i;
	}

	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			if(numset[i][j]=='.') continue;
			for(int k=0;k<4;k++)
			{
				int x=i+dx[k];
				int y=j+dy[k];
				if(x>=0&&x<n&&y>=0&&y<m&&numset[x][y]=='W')
				{
					un(i*m+j,x*m+y);
				}
			}
		}
	}

	int ret=0;
	for(int i=0;i<n*m;i++)
	{
		int x=i/m;
		int y=i%m;
		if(numset[x][y]=='W'&&i==fa[i])
		{
			ret++;
		}
	}
	cout<<ret<<endl;

}